import pandas as pd
import seaborn as sea
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import numpy as np
import folium
from folium.plugins import MarkerCluster
globalFrame = pd.read_csv("trafficking.csv")
globalFrame = globalFrame.drop(globalFrame.columns[0],1)
globalFrame = globalFrame.drop(["Datasource","ageBroad","majorityStatus","majorityEntry"],1)
globalFrame = globalFrame.rename(columns = {"yearOfRegistration":"year","majorityStatusAtExploit":"majorityStatus","meansOfControlDebtBondage":"DebtBondage",
"meansOfControlTakesEarnings":"EarningsStolen","meansOfControlRestrictsFinancialAccess": "WithholdsMoney",
"meansOfControlThreats":"Threats","meansOfControlPsychologicalAbuse":"PsychologicalAbuse",
"meansOfControlPhysicalAbuse":"PhysicalAbuse","meansOfControlSexualAbuse":"SexualAbuse",
"meansOfControlFalsePromises":"FalsePromises","meansOfControlPsychoactiveSubstances":"PsychoactiveSubstances",
"meansOfControlRestrictsMovement":"RestrictsMovement","meansOfControlRestrictsMedicalCare":"RestrictsMedicalCare",
"meansOfControlExcessiveWorkingHours":"ExcessiveWorkingHours","meansOfControlUsesChildren":"UsesChildren",
"meansOfControlThreatOfLawEnforcement":"ThreatOfLawEnforcement","meansOfControlWithholdsNecessities":"WithholdsNecessities",
"meansOfControlWithholdsDocuments":"WithholdsDocuments","meansOfControlOther":"OtherControl","meansOfControlNotSpecified":"ControlNotSpecified",
"recruiterRelationIntimatePartner":"IntimatePartner","recruiterRelationFriend":"Friend","recruiterRelationFamily":"Family",
"recruiterRelationOther":"OtherRelation","recruiterRelationUnknown":"UnknownRelation"})
frame = globalFrame[globalFrame['citizenship'] == "US"]
frame = frame.reset_index()
frame = frame.drop('index',1)
frame.head()
frame["Cases"] = 1
frame.loc[frame['majorityStatus'] == '0', 'majorityStatus'] = "unkown"
ageFrame = frame.groupby(["majorityStatus","year"]).sum()
ageFrame['Cases'].plot.bar()
ageFrame = ageFrame.reset_index()
ageFrame
ageFrame = ageFrame[ageFrame['majorityStatus'] != "unkown"]
physcialAbuse = sea.scatterplot(x = "year",y = "PhysicalAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
sexualAbuse = sea.scatterplot(x = "year",y = "SexualAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
pschologicalAbuse = sea.scatterplot(x = "year",y = "PsychologicalAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
psychoactiveDrugs = sea.scatterplot(x = "year",y = "PsychoactiveSubstances",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
predictFrame = frame[frame["majorityStatus"] != "unkown"]
for index,row in predictFrame.iterrows():
if(row.majorityStatus == "Minor"):
predictFrame.loc[index,"BinaryAge"] = 1
else:
predictFrame.loc[index,"BinaryAge"] = 0
predictAge = predictFrame[["year","BinaryAge"]]
model = LogisticRegression()
model.fit(X = predictAge.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
model.predict(np.array([[2017]]))
predictFrame
predictAbuse = predictFrame[["year","DebtBondage","EarningsStolen","WithholdsMoney","Threats","PhysicalAbuse","SexualAbuse","FalsePromises",
"PsychoactiveSubstances","RestrictsMovement","RestrictsMedicalCare","ExcessiveWorkingHours",
"UsesChildren","ThreatOfLawEnforcement","WithholdsNecessities","WithholdsDocuments",
"OtherControl","ControlNotSpecified","BinaryAge"]]
model = LinearRegression()
model.fit(X = predictAbuse.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
print("A victim of threats with 1 being a minor in 2017 is",model.predict(np.array([[2017,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]])))
predictRecruit = predictFrame[["year","IntimatePartner","Family","OtherRelation","UnknownRelation","BinaryAge"]]
model = LinearRegression()
model.fit(X = predictRecruit.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
print("A victim of a family member with one being a minor in 2017 is",model.predict(np.array([[2017,0,1,0,0]])))
print("A victim of an intimate partner with one being a minor in 2015 is",model.predict(np.array([[2015,1,0,0,0]])))
m = folium.Map()
cluster = MarkerCluster().add_to(m)
for index,row in globalFrame.iterrows():
if(row.citizenship == "CO"):
folium.map.Marker(location = ['4.5709','-74.2973'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "MD"):
folium.map.Marker(location = ['47.4116','28.3699'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "RO"):
folium.map.Marker(location = ['45.9432','24.9668'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UA"):
folium.map.Marker(location = ['48.3794','31.1656'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "BY"):
folium.map.Marker(location = ['53.7098','27.9534'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "HT"):
folium.map.Marker(location = ['18.9712','-72.2852'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UZ"):
folium.map.Marker(location = ['41.3775','64.5853'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "LK"):
folium.map.Marker(location = ['7.8731','80.7718'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "LK"):
folium.map.Marker(location = ['7.8731','80.7718'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "MM"):
folium.map.Marker(location = ['21.9162','95.9560'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UG"):
folium.map.Marker(location = ['1.3733','32.2903'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ID"):
folium.map.Marker(location = ['-0.7893','113.9213'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ID"):
folium.map.Marker(location = ['-0.7893','113.9213'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "KG"):
folium.map.Marker(location = ['42.882004','74.582748'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "AF"):
folium.map.Marker(location = ['33.9391','67.7100'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ER"):
folium.map.Marker(location = ['15.1794','39.7823'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "NG"):
folium.map.Marker(location = ['17.6078','8.0817'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "NP"):
folium.map.Marker(location = ['28.3949','84.1240'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "PH"):
folium.map.Marker(location = ['12.8797','121.7740'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "KH"):
folium.map.Marker(location = ['12.5657','104.9910'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "BD"):
folium.map.Marker(location = ['23.6850','90.3563'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "US"):
folium.map.Marker(location = ['37.0902','-95.7129'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "TH"):
folium.map.Marker(location = ['15.8700','100.9925'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "VN"):
folium.map.Marker(location = ['14.0583','108.2772'],popup = row.citizenship).add_to(cluster)
m